home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / emerald / emrldsys.lha / EC / OperationNames / startOpNames.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-08-16  |  1.5 KB  |  53 lines

  1. #include <stdio.h>
  2. #include "assert.h"
  3. #include "system.h"
  4. #include "emTypes.h"
  5. #include "sys/file.h"
  6.  
  7. char assertMessage[] = "Assertion failed: file %s, line %d\n";
  8. #define FILENAME "/EC/OperationNames/Names"
  9.  
  10. struct {
  11.     int hashTableSize;
  12.     int hashTableSizeInBytes;
  13.     int charTableMaxSize;
  14.     int charTableCurrentSize;
  15.     OID nextOIDToAllocate;
  16.     OID maxOIDToAllocate;
  17. } header;
  18.  
  19. typedef int HashValue;
  20.  
  21. typedef struct OpNameEntry {
  22.     int offset;            /* into charTable of the start of the string */
  23.     OID id;            /* what we want */
  24. } HashTableEntry;
  25.  
  26. static HashTableEntry *hashTable;
  27. static char *charTable;
  28.  
  29. void main()
  30. {
  31.     int fd;
  32.     char filename[256];
  33.     strcpy(filename, EMDIR);
  34.     strcat(filename, FILENAME);
  35.     fd = open(filename, O_WRONLY, 0);
  36.     assert (fd != -1);
  37.     header.hashTableSize = 2;
  38.     header.hashTableSizeInBytes = header.hashTableSize * sizeof(HashTableEntry);
  39.     header.charTableMaxSize = 32;
  40.     header.charTableCurrentSize = 0;
  41.     header.nextOIDToAllocate = 0xff000100;
  42.     header.maxOIDToAllocate  = 0xfffffffe;
  43.     hashTable = (HashTableEntry *) malloc(header.hashTableSizeInBytes);
  44.     bzero(hashTable, header.hashTableSizeInBytes);
  45.     charTable = malloc(header.charTableMaxSize);
  46.     bzero(charTable, header.charTableMaxSize);
  47.     
  48.     assert(write(fd, &header, sizeof(header)) == sizeof(header));
  49.     assert(write(fd, hashTable, header.hashTableSizeInBytes) == header.hashTableSizeInBytes);
  50.     assert(write(fd, charTable, header.charTableMaxSize) == header.charTableMaxSize);
  51.     close(fd);
  52. }
  53.